/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.edu.upc.dew.cobranzas.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JOptionPane;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import pe.edu.upc.dew.cobranzas.model.Contrato;
import pe.edu.upc.dew.cobranzas.model.Cuota;
import pe.edu.upc.dew.cobranzas.model.Trabajador;
import pe.edu.upc.dew.cobranzas.service.ContratoServiceImpl;
import pe.edu.upc.dew.cobranzas.service.CuotaServiceImpl;
import pe.edu.upc.dew.cobranzas.service.TrabajadorServiceImpl;
import pe.edu.upc.dew.cobranzas.service.VisitaServiceImpl;

/**
 *
 * @author Ivan
 */
public class VisitaController implements Controller {

    public VisitaServiceImpl visitaService;
    public ContratoServiceImpl contratoService;
    public CuotaServiceImpl cuotaService;
    public TrabajadorServiceImpl trabajadorService;
    public String inicio;

    public void setInicio(String inicio) {
        this.inicio = inicio;
    }

    public void setVisitaService(VisitaServiceImpl visitaService) {
        this.visitaService = visitaService;
    }

    public void setContratoService(ContratoServiceImpl contratoService) {
        this.contratoService = contratoService;
    }

    public void setCuotaService(CuotaServiceImpl cuotaService) {
        this.cuotaService = cuotaService;
    }

    public void setTrabajadorService(TrabajadorServiceImpl trabajadorService) {
        this.trabajadorService = trabajadorService;
    }

    public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {
        req.setAttribute("trabajadores", trabajadorService.Listado());
        req.setAttribute("contratos", contratoService.Listado());
        req.setAttribute("cuota", "");

        String dniTrabajador = "";
        int idContrato = 0;
        int idCuota = 0;
        String fecha = "";
        String estado = "";
        String observaciones = "";

        
        if (this.inicio.equals("I")) {
            this.inicio = "R";
        } else {
            String boton = req.getParameter("boton");
            dniTrabajador = req.getParameter("cmbtrabajador");
            idContrato = Integer.parseInt(req.getParameter("cmbcontrato"));
            if (!req.getParameter("txtcuota").equals("")) {
                idCuota = Integer.parseInt(req.getParameter("txtcuota"));
            }
            fecha = req.getParameter("txtfecha");
            estado = req.getParameter("cmbestado");
            observaciones = req.getParameter("txtobservaciones");

            if (boton.equals("cuota")) {

                idCuota = cuotaService.getCuotaPendiente(Integer.parseInt(req.getParameter("cmbcontrato")));

                if (idCuota == 0) {
                    JOptionPane.showMessageDialog(null, "No existen cuotas pendientes en el contrato seleccionado", "Error", JOptionPane.ERROR_MESSAGE);
                    req.setAttribute("cuota", "");
                } else {
                    req.setAttribute("cuota", idCuota);
                }
                req.setAttribute("fecha", fecha);
                req.setAttribute("estado", estado);
                req.setAttribute("observaciones", observaciones);

            }
            if (boton.equals("Registrar")) {
                /*Obtener el Trabajador*/
                Trabajador trabajador = new Trabajador();
                trabajador = trabajadorService.getTrabajadorPorDni(dniTrabajador);
                /*Obtener el contrato*/
                Contrato contrato = new Contrato();
                contrato = contratoService.getContratoPorCodigo(idContrato);
                /*Obtener la cuota*/
                Cuota cuota = new Cuota();
                cuota = cuotaService.getCuota(contrato, idCuota);
               /*grabando*/
                visitaService.Registra(contrato, cuota, fecha, trabajador, estado, observaciones);
            }
            if (boton.equals("Eliminar")) {
                String item = req.getParameter("visitaSeleccionada");
                String fecVisita = item.substring(0, item.length() - 2);
                String contItem = item.substring(item.length() - 2, item.length() - 1);
                String cuoItem = item.substring(item.length() - 1, item.length());
                visitaService.Elimina(Integer.parseInt(contItem), Integer.parseInt(cuoItem), fecVisita);

            }
        }
        req.setAttribute("visitas", visitaService.listadoPorTrabajador(dniTrabajador));


        return new ModelAndView("visitas");
    }
}
